package LeetCode.leetcode;

/**
 *  Z字形变换
 * @author: leiwenkang02@meituan.com
 * @date: 2018/9/8
 * @time: 06:57
 */
public class Test06Z字形变换 {
    public static void main(String[] args) {
        System.out.println(convert("PAYPALISHIRING", 4));
    }
    public static String convert(String s, int numRows) {
        char[] ch = s.toCharArray();
        int len = ch.length;
        StringBuilder[] sbs = new StringBuilder[numRows];
        for (int i = 0; i < sbs.length; i++) {
            sbs[i] = new StringBuilder();
        }

        int i = 0;
        while (i < len) {
            //第一列全部字符 从第0行到第numRows-1行
            for (int idx = 0; idx < numRows && i < len; idx++) {
                sbs[idx].append(ch[i++]);
            }

            //后面每列只有1个字符 从第numRows - 2行到第0行
            for (int idx = numRows - 2; idx >= 1 && i < len; idx--) {
                sbs[idx].append(ch[i++]);
            }
        }

        //sbs数组已经形成了Z字形
        for (int j = 1; j < numRows; j++) {
            sbs[0].append(sbs[j]);
        }
        return sbs[0].toString();

    }
}
